Funksione te sistemit te direktorive dhe te fileve

Shpeshhere eshte e nevojshme te kemi informacione rreth direktorise ku po punojme, ose na duhet te aksesojme skedare apo direktori te ndryshme ne sistem. Per keto dhe per te tjera veprime qe duam te kryejme mbi sistemin e direktorive dhe te fileve, tek serveri ku kemi hostuar skriptet PHP, nje numer i shumte funksionesh vijne ne ndihme. Keto funksione jane pjese e funksioneve baze te PHP-se dhe nuk kane nevoje per importim. Me poshte shpjegojme nje pjese te funksioneve kryesore te sistemit te direktorive dhe te fileve.

getcwd

string getcwd ()

Ky funksion kthen nje stringe e cila permban pathin e direktorise aktuale ku po punojme. Nqs. deshton marrja e ketij informacioni nga sistemi, atehere kthehet FALSE.

Shembull:

// direktoria aktuale
echo getcwd();    //Rezultati:  /home/alban.afmeti

//Funksion qe sherben per nderrimin e direktorise aktuale
chdir('cvs');

// direktoria aktuale
echo getcwd();    //Rezultati:  /home/alban.afmeti/cvs

chdir

bool chdir ( string $directory )

Ndryshon direktorine aktuale te PHP-se ne nje direktori tjeter te dhene ne parametrin hyres $directory. Kthen TRUE nqs. veprimi eshte i suksesshem, perndryshe kthen FALSE.

// direktoria aktuale
echo getcwd();    //Rezultati:  /home/alban.afmeti/cvs

//Funksion qe sherben per nderrimin e direktorise aktuale
chdir('dir_tjeter');

// direktoria aktuale
echo getcwd();    //Rezultati:  /home/alban.afmeti/cvs/dir_tjeter

Direktorite duhet te ekzistojne perndryshe veprimi do te deshtoje.

scandir

array scandir ( string $directory [, int $sorting_order = SCANDIR_SORT_ASCENDING [, resource $context ]] )

Kthen nje koleksion array te skedareve dhe direktorive qe ndodhen brenda direktorise se dhene ne hyrje $directory.

Parametri opsional $sorting_order ka vlere default nje renditje alfabetike ne ngjitje. Nqs. do te kalohet konstantja SCANDIR_SORT_DESCENDING atehere renditja do te behet ne zbritje. Ne rast se kalojme konstanten SCANDIR_SORT_NONE atehere elementet do te kthehen te parenditura.

Shembull:

$dir    = '/tmp';

$files = scandir($dir);

print_r($files);

Rezultati:

Array
(
    [0] => .
    [1] => ..
    [2] => skript.php
    [3] => ckemi.txt
    [4] => direktoria_tjtr
)

Ne rastin e kalimit te $sorting_order me vlere SCANDIR_SORT_DESCENDING:

$dir    = '/tmp';

$files = scandir($dir, SCANDIR_SORT_DESCENDING);

print_r($files);

Rezultati:

Array
(
    [0] => ckemi.txt
    [1] => direktoria_tjtr
    [2] => skript.php
    [3] => ..
    [4] => .
)

copy

bool copy ( string $source , string $dest [, resource $context ] )

Ben nje kopje te skedarit $source ne destinacionin $dest. Kthen TRUE nqs. kopja behet me sukses, perndryshe kthen FALSE.

Shembull:

$file = 'shembull.txt';
$newfile = 'shembull.txt.bak';

//Kopjojme skedarin shembull.txt, ne nje skedar te ri me emer shembull.txt.bak
$rezultati = copy($file, $newfile);

if (rezultati) {
    echo "Kopjimi u realizua me sukses!";
} else {
    echo "Kopjimi deshtoi!";
}

Ne rast se kopjimi behet me sukses atehere printohet mesazhi Kopjimi u realizua me sukses!, perndryshe Kopjimi deshtoi!.

rename

bool rename ( string $oldname , string $newname [, resource $context ] )

Ky funksion ben riemerimin e nje skedari. Me ane te ketij funksioni mund te realizojme edhe zhvendosjen e nje skedari nga nje direktori ne nje tjeter, pasi ne parametrin $oldname kalohet pathi i plote i skedarit, ndersa ne parametrin $newname kalohet pathi i ri i skedarit, ne te cilin mund te ndryshojme edhe emrin e direktorive nese duam. Nqs. skedari me emrin $newname eshte ekzistues, atehere ai do te mbishkruhet. Kthen TRUE nqs. riemerimi behet me sukses, perndryshe kthen FALSE.

Shembull:

rename("/tmp/tmp_file.txt", "/home/alban.afmeti/dokumentet/my_file.txt");

Ne kete rast emri i skedarit ndryshon nga tmp_file.txt ne my_file.txt, por gjithashtu behet edhe zhvendosja e skedarit nga direktoria /tmp, ne direktorine /home/alban.afmeti/dokumentet.

mkdir

bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )

Perpiqet te krijoje direktorine e specifikuar nga pathi qe i japim ne hyrje $pathname. Parametri i dyte opsional permban moden e krijimit te direktorise, pra te drejtat rreth lexim, shkrim dhe ekzekutim. Ajo ka nje vlere default 0777. Parametri i trete opsional percakton nqs. direktorite duhet te krijohen ne menyre rekursive apo jo. Pra, ne rast se duhet te krijohet vetem direktoria e fundit ne path, apo disa direktori ne path.

Kthen TRUE nqs. krijimi i direktorise behet me sukses, perndryshe kthen FALSE.

Shembull:

mkdir("/pathi/tek/direktoria", 0700);

Kalimi i parametrit te rekursivitetit:

// Desired folder structure
$structure = './depth1/depth2/depth3/';

//Edhe ne rast se folderi 'depth1' dhe 'depth2' nuk ekzistojne, ata do te krijohen

$rezultati = mkdir($structure, 0777, true);

if (!$rezultati) {
    echo ('Deshtoi krijimi i direktorive...');
}

rmdir

bool rmdir ( string $dirname [, resource $context ] )

Perpiqet te fshije nje direktori te specifikuar ne parametrin $dirname. Direktoria duhet te jete boshe, dhe duhet te kemi lejet e mjaftueshme per te bere nje veprim te tille. Kthen TRUE nqs. fshirja e direktorise ndodh me sukses, perndryshe kthen FALSE.

Shembull:

if (!is_dir('shembull')) {
    mkdir('shembull');
}

rmdir('shembull');
bool unlink ( string $filename [, resource $context ] )

Fshin skedarin e specifikuar tek parametri $filename. Kthen TRUE nqs. fshirja e skedarit ndodh me sukses, perndryshe kthen FALSE.

Shembull:

//Nqs. skedari eshte ne direktori te njejte me skriptin PHP
unlink('test.html');

// ose me path te plote
unlink('/home/alban.afmeti/Desktop/test.html');

filesize

int filesize ( string $filename )

Kthen nje numer integer qe permban madhesine e skedarit te specifikuar ne parametrin $filename.

$filename = 'somefile.txt';
echo $filename . ': ' . filesize($filename) . ' bytes';

Rezultati: somefile.txt: 133 bytes

file_exists

bool file_exists ( string $filename )

Kontrollon nqs. skedari ose direktoria e specifikuar tek $filename ekziston. Kthen TRUE nqs. ekziston, perndryshe kthen FALSE.

Shembull:

$filename = '/pathi/tek/direktoria/shembull.txt';

if (file_exists($filename)) {
    echo "Skedari $filename ekziston.";
} else {
    echo "Skedari $filename nuk ekziston!";
}

is_dir

bool is_dir ( string $filename )

Kontrollon nqs. pathi i dhene $filename eshte direktori. Nese po atehere kthen TRUE, perndryshe kthen FALSE. Ne rast se pathi eshte relativ kontrolli do te behet duke filluar nga direktoria aktuale ku gjendet skripti PHP.

Shembull:

if(is_dir('dir1/dir2')) {
    echo ("Pathi i dhene ekziston dhe eshte nje direktori.");
} else {
    echo ("Pathi i dhene nuk eshte nje direktori.");
}

is_file

bool is_file ( string $filename )

Kontrollon nqs. pathi i dhene eshte nje file i rregullt. Kthen TRUE nqs. pathi i dhene ekziston dhe eshte nje file i rregullt, perndryshe kthen FALSE.

Shembull:

var_dump(is_file('a_file.txt'));        //Rezultai: bool(true)

var_dump(is_file('/usr/bin/'));        //Rezultai: bool(false)

chmod

bool chmod ( string $filename , int $mode )

Perpiqet te ndryshoje moden (lejet per lexim, shkrim, ekzekutim) te file-it te dhene $filename, ne moden e dhene $mode. Kthen TRUE nese veprimi kryhet me sukses, perndryshe kthen FALSE.

Per siguri, moda duhet te kete nje shifer 0 ne fillim, sepse ajo duhet te jete oktale:


chmod("/somedir/somefile", 755);   // shifer dhjetore; ndoshta e pasakte

chmod("/somedir/somefile", "u+rwx,go+rx"); // string; e pasakte

chmod("/somedir/somefile", 0755);  // oktale; vlere e sakte e modes

Shembuj:

// lexim dhe shkrim per zoteruesin (owner), asgje per te tjeret
chmod("/somedir/somefile", 0600);

// lexim dhe shkrim per zoteruesin (owner), lexim per te tjeret
chmod("/somedir/somefile", 0644);

// Gjithcka per zoteruesin (owner), lexim dhe ekzekutim per te tjeret
chmod("/somedir/somefile", 0755);

// Gjithcka per zoteruesin (owner), lexim dhe ekzekutim per grupin e zoteruesit (owner)
chmod("/somedir/somefile", 0750);

basename

string basename ( string $path [, string $suffix ] )

Ne hyrje pranon si parameter nje stringe e cila permban nje path te caktuar. Jep si output emrin e file-it, pa perfshire pathin e plote, pra jep pjesen e fundit te pathit pas ndaresit te direktorive (/ ne sistemet Linux, ndersa ne Windows / ose \). P.sh. ne pathin /dir1/dir2/hello.php, pjesa e fundit eshte hello.php.

Parametri i dyte opsional $suffix sherben per te hequr nga stringa qe do te kthehet prapashtesen me vlere $suffix, ne rast se stringa qe do te kthehet perfundon me nje prapashtese te tille.

Shembull:

echo basename("/etc/sudoers.d", ".d");  // Rezultati: sudoers
echo basename("/etc/sudoers.d");    // Rezultati: sudoers.d
echo basename("/etc/passwd");   // Rezultati: passwd
echo basename("/etc/");   // Rezultati: etc
echo basename(".");   // Rezultati: .
echo basename("/"); // Stringe boshe

dirname

string dirname ( string $path [, int $levels = 1 ] )

Funksioni kthen direktorine prind te file-it, pathi i te cilit specifikohet tek parametri $path. Ne rast se $levels specifikohet, atehere nuk kthehet direktoria e drejperdrejte prind, por kthehet direktoria ne baze te numrit te dhene tek parametri $levels, pra p.sh. nqs jepet 2, do te kthehet direktoria dy nivele me lart. $levels duhet te jete nje integer me i madh se 0. Nese nuk ka ndares direktories (/) ne path, atehere do te na kthehet nje pike (.) qe tregon direktorine aktuale.

Shembull:

echo dirname("/etc/passwd");    // Rezultati: /etc
echo dirname("/etc/");          // Rezultati: /  (ose \ ne Windows)
echo dirname(".");              // Rezultati: .
echo dirname("C:\\");           // Rezultati C:\

//Me nivel te specifikuar - dy direktori me lart sepse eshte specifikuar niveli: 2
echo dirname("/usr/local/lib", 2);  // Rezultati /usr

pathinfo

pathinfo ( string $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] )

Kthen informacione rreth nje pathi te specifikuar. Duke u bazuar tek parametri $options kthen nje koleksion array, ose nje stringe me informacione. Nqs. $options nuk specifikohet atehere kthen nje array me te gjitha informacionet, perndryshe kthen nje stringe me informacionin e kerkuar ne baze te parametrit $options qe pranon keto konstante: PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION dhe PATHINFO_FILENAME.

Informacionet qe kthehen jane prapashtesa e file-it, emri i file-it, dirname i file-it dhe basename i file-it te cilat i shpjeguam edhe me lart se cfare ishin. Ne rast se file nuk permban prapashtese, nuk do te kthehet elementi i prapashteses.

Shembull:

$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');

echo $path_parts['dirname'];    //Rezultati: /www/htdocs/inc

echo $path_parts['basename'];   //Rezultati: lib.inc.php

echo $path_parts['extension'];  //Rezultati: php

echo $path_parts['filename'];   //Rezultati: lib.inc

filetype

string filetype ( string $filename )

Kthen tipit e file-it te dhene ne hyrje. Vlerat e mundshme jane: fifo, char, dir, block, link, file, socket dhe unknown. Kthen FALSE nese ndodh nje gabim.

Shembull:

echo filetype('/etc/passwd');  //Rezultati: file

echo filetype('/etc/');        //Rezultati: dir

is_uploaded_file

bool is_uploaded_file ( string $filename )

Tregon nqs. nje file i dhene ne hyrje eshte ngarkuar nepermjet HTTP POST. Nese po kthen TRUE, perndryshe kthen FALSE.

Ne menyre qe te funksionoje ne menyren e duhur, ky funksion do nje argument si: $_FILES['userfile']['tmp_name'] qe eshte nje emer file i perkohshem i vendosur nga vete sistemi, pasi emri origjinal i file-it ne kompjuterin klient $_FILES['userfile']['name'] nuk funksionon.

Shembull:

if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
   echo "Skedari ". $_FILES['userfile']['name'] ." u ngarkua me sukses.\n";
} else {
   echo "Sulm i mundshem nga jashte.";
}

move_uploaded_file

bool move_uploaded_file ( string $filename , string $destination )

Zhvendos nje file te ngarkuar ne nje vend te ri. Fillimisht kontrollon nese $filename eshte nje file i ngarkuar i vlefshem (dmth. i ngarkuar nepermjet mekanizmit te ngarkimit HTTP POST te PHP-se). Nese file eshte i vlefshem, ai do te zhvendoset ne nje lokacion me emer te dhene nga $destination. Nese file nuk eshte i vlefshem nuk do te behet asnje veprim, dhe funksioni do te ktheje FALSE. Edhe ne rast se prej ndonje problemi te mundshem nuk mund te behet transferimi i file-it, funksioni do te ktheje FALSE.

Shembull:

$uploads_dir = '/uploads';

if($_FILES["picture"]["error"] == UPLOAD_ERR_OK) {

    $tmp_name = $_FILES["picture"]["tmp_name"];

    // basename() mund te parandaloje sulmet kapercyese ndaj sistemit te fileve;
    // nje validim me i thelle i file-it do te ishte i pershtatshem

    $name = basename($_FILES["picture"]["name"]);

    //zhvendos file-in me emer te perkohshem, ne direktorine /uploads me emrin origjinal 
    //qe kishte ne kompjuterin klient

    move_uploaded_file($tmp_name, "$uploads_dir/$name");
}

Ne rast se skedari destinacion ekziston perpara se te bejme zhvendosjen, atehere ai do te mbishkruhet nga skedari i ri.

results matching ""

    No results matching ""